#include <iostream>
using namespace std;
int n;
int vis[10]={0},num[10]={0};
//dfs，其实是回溯，step代表现在取数字到第几位
void dfs(int step){
    if(step>n){
        for(int i:num)
            if(i) cout<<i<<" ";
        cout<<endl;
        return;
    }
    for(int i=1;i<=n;i++){
        if(!vis[i]){
            num[step]=i;
            vis[i]=1;
            dfs(step+1);

            vis[i]=0;       //回溯，撤销修改结果
            //现在step是多少，就返回到step继续for循环遍历
        }
    }
}


int main(){
    cin>>n;
    dfs(1);
    return 0;
}